﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using System.Net.Mail;
using System.Net;

public partial class Avaliador_ConvidarAvaliadorAE : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["Evento"] == null && Session["Usuario"] != null && Session["TipoUsuario"] != null)
            Response.Redirect("../Evento/GerenciarEventoAE.aspx");
        else if (Session["Usuario"] == null || Session["TipoUsuario"] == null)
            Response.Redirect("../Login.aspx");
        if (Session["TipoUsuario"].ToString() != "Administrador Evento")
            Response.Redirect("../Default.aspx");
    }
    [WebMethod]
    public static Resultado<Usuario> getUsuarios(int pagina, string nome)
    {
        int i = (pagina - 1) * 4;
        DataClassesDataContext dc = new DataClassesDataContext();
        Resultado<Usuario> retorno = new Resultado<Usuario>();
        retorno.Data = dc.Usuarios.Where(p => p.Pessoa.nome.Contains(nome)).OrderBy(p => p.Pessoa.nome).Skip(i).Take(4).ToList();
        retorno.TotalCount = dc.Usuarios.Where(p => p.Pessoa.nome.Contains(nome)).Count();
        return retorno;
    }
    public static void EnviarEmail(String destinatario, String idAvaliador, String nome, String assunto)
    {
        SmtpClient cliente = new SmtpClient("smtp.gmail.com", 587);
        MailMessage email = new MailMessage();
        cliente.EnableSsl = true;
        cliente.Credentials = new NetworkCredential("sistemaeventosceulp@gmail.com", "sistemaeventos1234");
        email.From = new MailAddress("sistemaeventos@gmail.com", "Sistema Eventos - CEULP/ULBRA");
        email.To.Add(destinatario);
        email.Subject = assunto;
        email.IsBodyHtml = true;
        email.Priority = MailPriority.Normal;
        email.Sender = email.From;
        email.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
        email.BodyEncoding = System.Text.Encoding.Default;
        email.Body = "http://localhost:60150/SistemaEventos/Avaliador/ConfirmarConviteAvaliador.aspx?codigo=" + idAvaliador;
        cliente.Send(email);
    }
    [WebMethod(EnableSession = true)]
    public static bool convidar(string id)
    {
        Evento evento = Evento.findEventoById(new Guid(System.Web.HttpContext.Current.Session["Evento"].ToString()));
        Usuario usuario = Usuario.findById(new Guid(id));
        Avaliador avaliador = new Avaliador();
        avaliador.aceito = false;
        avaliador.idEvento = evento.id;
        avaliador.idPessoa = usuario.Pessoa.id;
        avaliador.status = false;
        avaliador.id = Guid.NewGuid();
        if(!Avaliador.existAvaliador(evento.id, usuario.IdPessoa))
        {
            Avaliador.createAvaliador(avaliador);
            EnviarEmail(usuario.email, avaliador.id.ToString(), usuario.Pessoa.nome, "Convite de Avaliador");
            return true;
        }
        else
            return false;
    }
}